在學了那麼多外匯相關的語言及用法後,我們就可以依靠自己的知識寫出一個完整的EA了,不過這時很多人便會想說,ChatGPT那麼方便,可不可以用它來協助我們實現策略,再也不用學什麼程式碼就可以編寫自動交易程式了?
答案是可以,但絕對不是什麼程式碼都不用會。今天就來分享一下如何用ChatGPT編寫出一份自己的交易策略。
其實有常在使用ChatGPT來寫程式的朋友應該都知道,他寫的程式在指令給清楚的情況下都不太會出錯,尤其是像JAVA、Python...。但是許多人說ChatGPT寫出的問題一堆、常常錯誤之類的問題,通常在於指令過於開放性,或者是他在其中莫名的加進了別的語言,導致編譯出現未定義函數之類的問題。這時候就變成考驗使用者看不看得懂該語言了。依我實測下來,ChatGPT常常出現的問題便是一本正經的講幹話,像是常常在請他寫MQL5語言時,會跟我說在什麼情況要用什麼函數,這個函數的參數要怎麼設定...之類的,但是這個函數根本就不是MQL5的內建函數,而既使再次要求他使用MQL5語言,他也是會誠摯的道歉然後繼續亂寫。但總歸,在懂程式碼的人面前,這些都不會是太大的問題。所以在請程式寫一些較於冷門的語言時,請確保自己對那個程式碼足夠熟悉,才不會遇到錯誤還只能默默地罵ChatGPT沒用。
很多人在第一次使用ChatGPT時,都會直接給他我們預期達到成果的指令,但這也是大多人失敗的主因。我自己在實測時,如果一次就要求他寫完整個EA,大概出現的結果幾乎都是四不像,雖然說可以編譯,但是符不符合我的想法不說,還可能出現無限迴圈(無限下單之類的),或者獲取第-1根K棒的值,但未來的K棒要怎麼取值呢?總之,要求ChatGPT一次寫出能動的EA看來是不太可能,有些會沒有進場時機,有的會沒有退場。所以要使用ChatGPT寫出能用的東西只能使用divide and conquer來完成了。
Divide and Conquer是一種算法設計和問題解決的方法,核心思想是將一個大問題分解成更小的子問題,然後逐個解決這些子問題,最後將它們的解合並起來以得到原始問題的解。這個方法通常適用於那些可以分解成相似子問題的問題,可以顯著減少問題的覆雜性,提高問題的解決效率。
分而治之算法通常包括以下三個主要步驟:
分解(Divide):將原始問題分解成若幹個較小的、相似的子問題。這一步驟的目標是簡化問題,使得每個子問題都比原始問題更容易解決。
解決(Conquer):逐個解決每個子問題。通常,這些子問題的規模比原始問題小,因此更容易解決。如果子問題足夠小,就可以直接求解它們。
合並(Combine):將子問題的解合並起來,以獲得原始問題的解。這通常是一個相對簡單的步驟,因為子問題的解已經得到了。
在EA設計中,最重要的便是進場與退場,而一個完整的交易策略便是「進場+出場」,其他像是設定止損、盈利之類的,今天就先不提了,不然連單都下不了,設定了再多都沒用。
我通常在分解問題時則會依照這些步驟來分:
在利用這些子問題分別對ChatGPT詠唱後,再將得到的結果組合寫至OnTick()處理器中。運氣好的話,說不定我們只要寫一兩個if就能結束了。
今天大綱就提到這,明天會以各問題以及詠唱的部分做更詳細的實作。